package main

import (
	"fmt"
	"github.com/golang/protobuf/proto"
	"protocdemo/example"
)

/**
1.protobuf协议:两个，多个服务之间进行数据通信的协议.(微服务之间的通信协议)
2.protobuf库: 一个实现protobuf协议的go语言库 https://github.com/golang/protobuf
3.protoc编译器:将xxx.proto文件编译成xxx.pb.go文件
编译器地址：https://github.com/protocolbuffers/protobuf/releases
 */
func main(){
	order := &example.Order{
		OrderId:proto.Int64(123),
		Num:proto.Int64(100),
		Timestamp:[]string{"2020-8-17"},
	}
	//序列化(序列化为二进制，通过网络发送个B服务，打包)
	bytes,err := proto.Marshal(order)
	if err!=nil{
		panic(err)
	}

	//反序列化（获取到A服务发送来的二进制数据，进行解包）
	myOrder := example.Order{}
	err = proto.Unmarshal(bytes,&myOrder)
	if err!=nil {
		panic(err)
	}
	fmt.Println("订单id: ",myOrder.GetOrderId())
	fmt.Println("订单编号: ",*myOrder.Num)
	fmt.Println("订单时间: ",myOrder.GetTimestamp())
}
